package cn.tedu.collection;

import com.sun.media.jfxmediaimpl.HostUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*本类用于测试List接口*/
public class TestList {
    public static void main(String[] args) {
        //创建List对象,注意List是一个接口,不可以实例化
        ArrayList<Object> list = new ArrayList<>();

        //测试继承自Collection中的方法
        list.add("大力娃");
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("火娃");
        list.add("水娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);

        //list.clear();
        //System.out.println(list);

        System.out.println(list.contains("火娃"));
        System.out.println(list.equals("水娃"));
        System.out.println(list.isEmpty());
        System.out.println(list.remove("小紫娃"));
        System.out.println(list);
        System.out.println(list.size());
        System.out.println(Arrays.toString(list.toArray()));//将集合转为数组


        //测试List接口自己的方法,由于List有序的,所以可以根究索引来操作集合中的元素
        list.add("小蝴蝶");//默认的添加方法追加在末尾
        list.add(1,"小蝴蝶");
        list.add(3,"蛇精");
        System.out.println(list);

        System.out.println(list.indexOf("小蝴蝶"));
        System.out.println(list.lastIndexOf("小蝴蝶"));

        System.out.println(list.remove(5));//根据指定的索引值删除集合中的元素
        System.out.println(list);
        System.out.println(list.get(2));//获取集合中指定索引处的元素
        System.out.println(list.set(7,"蝎子精"));//修改指定索引处的元素为指定的元素蝎子精
        System.out.println(list);

        //测试集合间的操作

        List<String> list2 = new ArrayList<>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        System.out.println(list2);

        System.out.println(list.addAll(list2));//将list2集合的所有元素追加到list集合末尾
        System.out.println(list.addAll(1,list2));
        System.out.println(list);
        System.out.println(list.containsAll(list2));
        System.out.println(list.removeAll(list2));//删除list集合中属于list2集合的所有元素
        System.out.println(list);


        //迭代集合的发式
        //for循环
    }
}
